/*
beforeEach:任何路由进入前它都会执行
*/
import router from '@/router'
// 前置守卫

/*
   判断有没有token
       有token
          进入的页面是login页，跳转到首页
          进入页面非login页，
             判断是否有用户信息（1：定义api  2:导入调用（vuex并存储用户信息）3：在导航守卫这触发）
                如果有
                    正常进入
                没有
                   去获取完用户信息后再正常进入

       没有token
          判断要进入的页面是否是白名单（不需要登陆的页面:404/login）页面，
              如果是：正常进入
              如果不是：跳转到登陆页

*/
import store from '@/store' // store===this.$store
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
const whitePage = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  Nprogress.start()
  //   console.log('to', to)
  //    to:要去的路由
  //    from:从哪来的路由
  //    next：是否允许通过
  console.log(store.state.user.token)
  if (store.state.user.token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      if (store.state.user.userInfo.userId) {
        next()
      } else {
        // console.log(1)
        await store.dispatch('user/getUserInfo')
        // console.log(2)
        // next()
        next(to.fullPath) // fullPath相对于path就是多了路由传参
      }
    }
  } else {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login')
    }
  }
  Nprogress.done()
})
router.afterEach(() => {
  Nprogress.done()
})
